home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / include / asm / ptrace-abi.h < prev    next >
Encoding:
C/C++ Source or Header  |  2009-09-09  |  3.6 KB  |  146 lines

  1. #ifndef _ASM_X86_PTRACE_ABI_H
  2. #define _ASM_X86_PTRACE_ABI_H
  3.  
  4. #ifdef __i386__
  5.  
  6. #define EBX 0
  7. #define ECX 1
  8. #define EDX 2
  9. #define ESI 3
  10. #define EDI 4
  11. #define EBP 5
  12. #define EAX 6
  13. #define DS 7
  14. #define ES 8
  15. #define FS 9
  16. #define GS 10
  17. #define ORIG_EAX 11
  18. #define EIP 12
  19. #define CS  13
  20. #define EFL 14
  21. #define UESP 15
  22. #define SS   16
  23. #define FRAME_SIZE 17
  24.  
  25. #else /* __i386__ */
  26.  
  27. #if defined(__ASSEMBLY__) || defined(__FRAME_OFFSETS)
  28. #define R15 0
  29. #define R14 8
  30. #define R13 16
  31. #define R12 24
  32. #define RBP 32
  33. #define RBX 40
  34. /* arguments: interrupts/non tracing syscalls only save upto here*/
  35. #define R11 48
  36. #define R10 56
  37. #define R9 64
  38. #define R8 72
  39. #define RAX 80
  40. #define RCX 88
  41. #define RDX 96
  42. #define RSI 104
  43. #define RDI 112
  44. #define ORIG_RAX 120       /* = ERROR */
  45. /* end of arguments */
  46. /* cpu exception frame or undefined in case of fast syscall. */
  47. #define RIP 128
  48. #define CS 136
  49. #define EFLAGS 144
  50. #define RSP 152
  51. #define SS 160
  52. #define ARGOFFSET R11
  53. #endif /* __ASSEMBLY__ */
  54.  
  55. /* top of stack page */
  56. #define FRAME_SIZE 168
  57.  
  58. #endif /* !__i386__ */
  59.  
  60. /* Arbitrarily choose the same ptrace numbers as used by the Sparc code. */
  61. #define PTRACE_GETREGS            12
  62. #define PTRACE_SETREGS            13
  63. #define PTRACE_GETFPREGS          14
  64. #define PTRACE_SETFPREGS          15
  65. #define PTRACE_GETFPXREGS         18
  66. #define PTRACE_SETFPXREGS         19
  67.  
  68. #define PTRACE_OLDSETOPTIONS      21
  69.  
  70. /* only useful for access 32bit programs / kernels */
  71. #define PTRACE_GET_THREAD_AREA    25
  72. #define PTRACE_SET_THREAD_AREA    26
  73.  
  74. #ifdef __x86_64__
  75. # define PTRACE_ARCH_PRCTL      30
  76. #endif
  77.  
  78. #define PTRACE_SYSEMU          31
  79. #define PTRACE_SYSEMU_SINGLESTEP  32
  80.  
  81. #define PTRACE_SINGLEBLOCK    33    /* resume execution until next branch */
  82.  
  83. #ifdef CONFIG_X86_PTRACE_BTS
  84.  
  85. #ifndef __ASSEMBLY__
  86. #include <asm/types.h>
  87.  
  88. /* configuration/status structure used in PTRACE_BTS_CONFIG and
  89.    PTRACE_BTS_STATUS commands.
  90. */
  91. struct ptrace_bts_config {
  92.     /* requested or actual size of BTS buffer in bytes */
  93.     __u32 size;
  94.     /* bitmask of below flags */
  95.     __u32 flags;
  96.     /* buffer overflow signal */
  97.     __u32 signal;
  98.     /* actual size of bts_struct in bytes */
  99.     __u32 bts_size;
  100. };
  101. #endif /* __ASSEMBLY__ */
  102.  
  103. #define PTRACE_BTS_O_TRACE    0x1 /* branch trace */
  104. #define PTRACE_BTS_O_SCHED    0x2 /* scheduling events w/ jiffies */
  105. #define PTRACE_BTS_O_SIGNAL     0x4 /* send SIG<signal> on buffer overflow
  106.                        instead of wrapping around */
  107. #define PTRACE_BTS_O_ALLOC    0x8 /* (re)allocate buffer */
  108.  
  109. #define PTRACE_BTS_CONFIG    40
  110. /* Configure branch trace recording.
  111.    ADDR points to a struct ptrace_bts_config.
  112.    DATA gives the size of that buffer.
  113.    A new buffer is allocated, if requested in the flags.
  114.    An overflow signal may only be requested for new buffers.
  115.    Returns the number of bytes read.
  116. */
  117. #define PTRACE_BTS_STATUS    41
  118. /* Return the current configuration in a struct ptrace_bts_config
  119.    pointed to by ADDR; DATA gives the size of that buffer.
  120.    Returns the number of bytes written.
  121. */
  122. #define PTRACE_BTS_SIZE        42
  123. /* Return the number of available BTS records for draining.
  124.    DATA and ADDR are ignored.
  125. */
  126. #define PTRACE_BTS_GET        43
  127. /* Get a single BTS record.
  128.    DATA defines the index into the BTS array, where 0 is the newest
  129.    entry, and higher indices refer to older entries.
  130.    ADDR is pointing to struct bts_struct (see asm/ds.h).
  131. */
  132. #define PTRACE_BTS_CLEAR    44
  133. /* Clear the BTS buffer.
  134.    DATA and ADDR are ignored.
  135. */
  136. #define PTRACE_BTS_DRAIN    45
  137. /* Read all available BTS records and clear the buffer.
  138.    ADDR points to an array of struct bts_struct.
  139.    DATA gives the size of that buffer.
  140.    BTS records are read from oldest to newest.
  141.    Returns number of BTS records drained.
  142. */
  143. #endif /* CONFIG_X86_PTRACE_BTS */
  144.  
  145. #endif /* _ASM_X86_PTRACE_ABI_H */
  146.